// #include <stdio.h>
// #include <stdlib.h>
// #include <unistd.h>
// #include <pthread.h>
 
// void *my_thread_function(void *arg) {
//     // 线程执行的代码
//     printf("Thread is running...\n");
//     sleep(2);  // 模拟耗时操作
//     printf("Thread is done.\n");
//     return NULL;  // 线程返回
// }
 
// int main() {
//     pthread_t thread_id;
 
//     // 创建线程
//     if (pthread_create(&thread_id, NULL, my_thread_function, NULL) != 0) {
//         perror("Failed to create thread");
//         return EXIT_FAILURE;
//     }
 
//     // 分离线程
//     if (pthread_detach(thread_id) != 0) {
//         perror("Failed to detach thread");
//         return EXIT_FAILURE;
//     }
 
//     // 主线程继续执行
//     printf("Main thread continues...\n");
//     sleep(3);  // 主线程也模拟耗时操作
 
//     printf("Main thread is done.\n");
 
//     return 0;
// }


#include <iostream>
#include <pthread.h>
#include <string>
#include <unistd.h>
#include <cassert>
using namespace std;

class threaddata
{
public:
    string tname;
    pthread_mutex_t *pmutex;
    threaddata(const string &name,pthread_mutex_t *pm)
    :tname(name),pmutex(pm)
    {}
};

void* getTickets(void *args)
{

}

int main()
{
    time_t start = time(nullptr);
    pthread_mutex_t mtx;
    pthread_mutex_init(&mtx,nullptr);
    srand((unsigned long)time(nullptr)^getpid());
    pthread_t t[3];
    for(int i=0;i<3;i++)
    {
        string name = "thread";
        name +=to_string(i+1);
        threaddata *td=new threaddata(name,&mtx);
        pthread_create(&t[i],nullptr,getTickets,(void*)td);
    }
    for(int i=0;i<3;i++)
    {
        pthread_join(t[i],nullptr);
    }
    pthread_mutex_destroy(&mtx);
    time_t end=time(nullptr);
}